package com.redtea.lgp.md_emp.service;

import com.redtea.lgp.md_emp.entity.LgpDept;
import com.redtea.lgp.md_emp.entity.LgpEmp;

import java.util.List;

/**
 * (LgpDept)表服务接口
 *
 * @author makejava
 * @since 2024-04-24 15:04:02
 */
public interface LgpDeptService {

    //查询所有没有任何职员的部门
    List<LgpDept> queryNoOneEMPDept();

    //根据职员的id查询其对应部门（可能有多个部门）
    List<LgpDept> queryDeptById(Integer empNo);

    //查询名字中带有某字符的员工
    List<LgpDept> queryEmployByChar(String filterChar);

    //统计传入时间后的入职员工
    List<LgpEmp> countEmployByDate(String date);

    //统计薪酬在某一个值下的员工
    List<LgpEmp> countSalaryGrade();

    //1.找出选择部门(30)中的雇员
    //SELECT * FROM lgp_emp emp LEFT JOIN lgp_dept dept ON dept.DEPTNO = emp.DEPTNO WHERE dept.DEPTNO=30;
    //2.检索emp表中的员工姓名、月收入、部门编号、部门名称
    //SELECT emp.ENAME,IFNULL(emp.SAL,emp.SAL),emp.DEPTNO,dept.DNAME FROM lgp_emp emp LEFT JOIN lgp_dept dept ON dept.DEPTNO=emp.DEPTNO

    //3.检索emp表中员工姓名、及雇佣时间（雇佣时间按照yyyy-mm-dd显示）
    //SELECT ENAME,DATE_FORMAT(HIREDATE,"%Y年-%m月-%d日") FROM lgp_emp

    //4.检索emp表中的所有job，每种job仅仅保留一种显示
    //SELECT DISTINCT JOB FROM lgp_emp

    //5.检索emp表中的员工姓名及薪资不为空的全年收入并按降序排序
    //SELECT ENAME,(IFNULL(SAL,0)+IFNULL(SAL,0))*12 pay FROM lgp_emp WHERE SAL IS NOT NULL ORDER BY pay DESC

    //6.检索emp表中的所有销售员姓名及薪资不为空的全年收入并按降序排序
    //SELECT ENAME,(IFNULL(SAL,0)+IFNULL(SAL,0))*12 pay FROM lgp_emp WHERE SAL IS NOT NULL AND JOB="销售员" ORDER BY pay DESC

    //7.检索月收入大于2000的员工姓名、月收入并按薪资降序排序
    //SELECT ENAME,(IFNULL(SAL,0))*1 pay FROM lgp_emp HAVING pay > 2000 ORDER BY pay DESC

    //8.检索月收入在1000元到2000元的员工姓名、月收入及雇佣时间并按薪资降序排序
    //SELECT ENAME,(IFNULL(SAL,0))*1 pay FROM lgp_emp HAVING pay < 2000 AND pay>1000 ORDER BY pay

    //9.检索以‘马’开头的员工姓名及月收入
    //SELECT ENAME,SAL FROM lgp_emp WHERE ENAME LIKE '马%' ORDER BY SAL

    //10.检索emp表中月收入是800的或是1250的员工姓名、薪资及部门编号
    //SELECT ENAME,SAL,DEPTNO FROM lgp_emp WHERE SAL=800 OR SAL=1250 ORDER BY SAL

    //11.显示在部门20中岗位是“职员”的所有雇员信息
    //SELECT * FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO=dept.DEPTNO WHERE emp.DEPTNO=20 AND emp.JOB="职员"

    //12.显示工资高于2500或岗位为“经理”的所有雇员信息
    //SELECT * FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO=dept.DEPTNO WHERE emp.SAL>=2500 OR emp.JOB="经理"

    //13.检索emp表中有奖金的员工姓名、月收入及奖金
    //SELECT ENAME,SAL,COMM FROM lgp_emp emp WHERE COMM IS NOT NULL

    //14.检索emp表中部门编号是30的员工姓名、月收入及提成，并要求其结果按月收入升序、然后按提成降序显示
    //SELECT ENAME,SAL,COMM FROM (SELECT * FROM lgp_emp ORDER BY SAL ASC) t ORDER BY t.COMM DESC

    //15.列出所有办事员的姓名、编号和部门(姓名对不上) 【略】

    //17.找出部门10中所有'经理'和部门20中的所有'职员'的详细资料
    //SELECT * FROM lgp_emp WHERE (DEPTNO=10 AND JOB='经理') OR (DEPTNO=20 AND JOB='职员')

    //18.找出部门10中所有'经理'、部门20中所有'职员'，既不是经理又不是'职员'但其薪金>=2000的所有雇员的详细资料
    //SELECT * FROM lgp_emp WHERE (DEPTNO=10 AND JOB='经理') OR (DEPTNO=20 AND JOB='职员') OR (JOB <> '经理' AND JOB <> '职员' AND SAL>2000)

    //19.找出收取奖金的雇员的不同工作
    //SELECT DISTINCT JOB FROM lgp_emp WHERE COMM IS NOT NULL OR COMM>0

    //20.找出不收取奖金或收取的奖金低于100的雇员
    //SELECT * FROM lgp_emp WHERE (COMM IS NULL OR COMM=0) OR COMM<100

    //21.找出各月倒数第三天受雇的所有雇员
    //SELECT * FROM lgp_emp WHERE DAYOFMONTH(LAST_DAY(HIREDATE))-DAYOFMONTH(HIREDATE)<3

    //22.获取当前日期所在月的第一天日期、最后一天日期、
    //SELECT CURDATE();  -- 获取当前日期
    //SELECT DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY) -- 获取本月第一天
    //SELECT LAST_DAY(CURDATE()); -- 获取当月最后一天
    //SELECT DATE_ADD(CURDATE()-DAY(CURDATE())+1,INTERVAL 1 MONTH ) -- 获取下个月的第一天

    //23.找出司龄大于37年的员工
    //SELECT * FROM lgp_emp WHERE DATE_ADD(CURRENT_DATE(),INTERVAL -37 YEAR)>HIREDATE

    //24.显示正好为2个汉字的雇员姓名
    //SELECT ENAME FROM lgp_emp WHERE LENGTH(ENAME)=6

    //25.显示不带有'克'的雇员姓名
    //SELECT * FROM lgp_emp WHERE ENAME NOT LIKE "%克%"

    //26.显示雇员的详细资料，按姓名排序 略
    //

    //27.显示雇员姓名，根据其服务年限，将最老的雇员排在最前面
    //SELECT * FROM lgp_emp ORDER BY HIREDATE ASC

    //28.显示所有雇员的姓名、工作和薪金，按部门编码的降序顺序排序，而部门号相同时按薪金升序
    //SELECT ENAME,DEPTNO,SAL FROM lgp_emp ORDER BY DEPTNO DESC, SAL ASC

    //29.显示所有雇员的姓名和加入公司的年份和月份，按雇员受雇日所在月排序，将最早年份的项目排在最前面【双排序数据不太对】
    //SELECT ENAME,HIREDATE,SAL FROM lgp_emp ORDER BY HIREDATE ASC,SAL ASC

    //30.显示在一个月为30天的情况下所有雇员的日薪金
    //SELECT ENAME,HIREDATE,SAL/30 FROM lgp_emp WHERE DAY(LAST_DAY(HIREDATE))=30

    //31.找出在（任何年份的）2月受聘的所有雇员
    //SELECT ENAME,HIREDATE FROM lgp_emp WHERE MONTH(HIREDATE)=2

    //32.对于每个雇员，分别显示其加入公司的、年数、月数、天数
    //SELECT ENAME 姓名,TIMESTAMPDIFF(YEAR,hiredate,NOW())加入公司年数,TIMESTAMPDIFF(MONTH,hiredate,NOW())加入公司月数,DATEDIFF(CURRENT_DATE,HIREDATE) 加入公司天数 FROM lgp_emp

    //33.显示姓名字段的任何位置，包含 "A" 的所有雇员的姓名  略

    //34.以年、月和日显示所有雇员的服务年限
    //SELECT ename 姓名, YEAR(hiredate) 年,MONTH(hiredate)月,DAY(hiredate) 日,TIMESTAMPDIFF(YEAR,hiredate,NOW()) 服务年数 FROM lgp_emp

    //35、选择公司中有奖金 (COMM不为空,且不为0) 的员工姓名，工资和奖金比例,按工资逆排序,奖金比例逆排序.  略
    //

    //36、选择公司中没有管理者的员工姓名及job
    //SELECT ENAME,JOB FROM lgp_emp emp WHERE MGR IS NULL

    //37、选择在1987年雇用的员工的姓名和雇用时间
    //SELECT ENAME,HIREDATE,DATEDIFF(NOW(),HIREDATE) f FROM lgp_emp emp WHERE YEAR(HIREDATE)=1987

    //38、选择在20或10号部门工作的员工姓名和部门号
    //SELECT ENAME,EMPNO FROM lgp_emp emp WHERE DEPTNO=10 OR DEPTNO=20

    //39、选择雇用时间在1981-02-01到1981-05-01之间的员工姓名，职位(job)和雇用时间,按从早到晚排序.
    //SELECT ENAME,JOB,HIREDATE FROM lgp_emp emp WHERE HIREDATE>DATE("1981-02-01") AND HIREDATE<DATE("1981-05-01") ORDER BY HIREDATE ASC

    //40、选择工资不在5000到12000的员工的姓名和工资
    //SELECT ENAME,SAL FROM lgp_emp WHERE NOT (SAL>1000 AND SAL < 2000)

    //41、查询员工号为7934的员工的姓名和部门号
    //SELECT ENAME,DEPTNO FROM lgp_emp WHERE EMPNO IN(7934)

    //42、查询工资大于1200的员工姓名和工资 略

    /*****************复杂查询********************/
    //1.列出与“斯科特”从事相同工作的所有员工及部门名称，部门人数。
    //SELECT emp.ENAME,emp.JOB,dept.DNAME FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO = dept.DEPTNO WHERE emp.JOB =(SELECT JOB FROM lgp_emp WHERE ENAME ="斯科特")
        
    //2.列出公司各个工资等级雇员的数量、平均工资。
    //SELECT COUNT(ta.EMPNO) 数量,avg(ta.SAL) 平均数 FROM (SELECT * FROM lgp_emp emp,lgp_salgrade sal WHERE emp.SAL>=sal.losal AND emp.SAL <=sal.hisal) ta GROUP BY ta.grade

    //3.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
    //总和对比：SELECT * FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO = dept.DEPTNO WHERE SAL > (SELECT SUM(la.SAL) FROM (SELECT * FROM lgp_emp le WHERE le.DEPTNO =30) la)
    //对大值对比：SELECT * FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO = dept.DEPTNO  WHERE emp.SAL >(SELECT max(le.SAL) from (SELECT * FROM lgp_emp le WHERE le.DEPTNO =30) le)

    //4.列出在每个部门工作的员工数量、平均工资和平均服务期限
    //SELECT emp.DEPTNO, COUNT(emp.EMPNO) , AVG(emp.SAL), AVG(YEAR(NOW()) - YEAR(emp.HIREDATE)) ay FROM lgp_emp emp GROUP BY emp.DEPTNO HAVING ay > 10 AND ay<43

    //5.列出所有员工的姓名、部门名称和工资 略

    //6.列出所有部门的详细信息和部门人数
    //SELECT dept.*,count(emp.EMPNO)人数 FROM lgp_dept dept LEFT JOIN lgp_emp emp ON dept.DEPTNO =emp.DEPTNO GROUP BY dept.DEPTNO

    //7.列出各种工作的最低工资及从事此工作的雇员姓名
    //底薪人员可能不止1个：SELECT * FROM lgp_emp emp LEFT JOIN (SELECT emp.JOB ,min(emp.SAL)mySal FROM lgp_emp emp GROUP BY emp.JOB) jobLa ON emp.SAL = jobLa.mySal WHERE emp.SAL=jobLa.mySal

    //8.列出各个部门的MANAGER(经理)的最低薪金、姓名、部门名称、部门人数
    //SELECT count(emp.EMPNO) FROM lgp_emp emp LEFT JOIN (SELECT * FROM lgp_emp emp WHERE (ifnull(emp.SAL,0)+ifnull(emp.COMM,0))=(SELECT min(ifnull(emp.SAL,0)+ifnull(emp.COMM,0))maLowSal FROM lgp_emp emp WHERE emp.JOB ="经理")) lowM ON emp.DEPTNO =lowM.DEPTNO WHERE lowM.DEPTNO=emp.DEPTNO GROUP BY emp.DEPTNO

    //9.列出所有员工的年工资，所在部门名称，按年薪从低到高排序。
    //SELECT emp.ENAME,((IFNULL(emp.SAL,0)+IFNULL(emp.COMM,0))*12) nx,dept.DNAME FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO=dept.DEPTNO ORDER BY nx ASC

    //10.查出某个员工的上级主管及所在部门名称，并要求出这些主管中的薪水超过3000
    //SELECT * FROM lgp_emp emp LEFT JOIN (SELECT emp.MGR,dept.DNAME FROM lgp_emp emp LEFT JOIN lgp_dept dept ON emp.DEPTNO = dept.DEPTNO WHERE emp.EMPNO=7369) leader ON emp.EMPNO=leader.MGR WHERE emp.EMPNO = leader.MGR AND ((IFNULL(emp.SAL,0)+IFNULL(emp.COMM,0))*12)>3000

    //11.求出部门名称中，带‘斯’字符的部门员工的工资合计、部门人数。
    //SELECT dept.DNAME 部门名称,COUNT(emp.EMPNO) 部门人数,SUM(IFNULL(emp.SAL,0)) 薪资总合 FROM lgp_dept dept LEFT JOIN lgp_emp emp ON emp.DEPTNO=dept.DEPTNO WHERE emp.ENAME LIKE "%斯%" GROUP BY dept.DEPTNO

    //12.给任职日期超过40年或者在87年雇佣的雇员加薪，加薪原则：10部门增长10%，20部门增长20%，30部门增长30%，依次类推。
    //SELECT emp.ENAME,IF(emp.DEPTNO = 10, emp.SAL * (1 + 0.1), IF(emp.DEPTNO = 20, emp.SAL * (1 + 0.2), IF(emp.DEPTNO = 30, emp.SAL * (1 + 0.3), NULL))) FROM lgp_emp emp WHERE (YEAR(NOW()) - YEAR(emp.HIREDATE)) > 40 OR YEAR(emp.HIREDATE)=1987;

    //13.列出至少有一个员工的所有部门的信息
    //SELECT * FROM lgp_dept dept LEFT JOIN (SELECT emp.DEPTNO,count(emp.EMPNO) num FROM lgp_emp emp GROUP BY emp.DEPTNO) dc ON dept.DEPTNO = dc.DEPTNO WHERE dc.DEPTNO=dept.DEPTNO AND dc.num>0

    //14.列出薪水比“史密斯”多的所有员工信息
    //SELECT * FROM lgp_emp emp, (SELECT EMPNO,SAL FROM lgp_emp WHERE ENAME="史密斯") smith WHERE emp.SAL>smith.SAL
    //SELECT * FROM lgp_emp WHERE lgp_emp.SAL>(SELECT SAL FROM lgp_emp WHERE ENAME="史密斯")

    //15.列出所有员工的姓名以及其直接上级的姓名
    //SELECT * FROM lgp_emp emp LEFT JOIN (SELECT ld.MGR,emp.ENAME FROM (SELECT DISTINCT MGR FROM lgp_emp WHERE MGR IS NOT NULL) ld LEFT JOIN lgp_emp emp ON ld.MGR=emp.EMPNO) leader ON emp.MGR = leader.MGR

    //16.列出受雇日期早于其直接上级的所有员工的编号、姓名，部门名称
    //SELECT * FROM lgp_emp LEFT JOIN(SELECT ENAME ldName,EMPNO ldNo,HIREDATE ldH FROM lgp_emp) ld ON lgp_emp.MGR = ld.ldNo LEFT JOIN lgp_dept ON lgp_emp.DEPTNO=lgp_dept.DEPTNO WHERE lgp_emp.HIREDATE< ld.ldH

    //17.列出部门名称和这些部门的员工信息，同时列出那些没有员工的部门
    //SELECT * FROM lgp_dept dept LEFT JOIN lgp_emp emp ON dept.`DEPTNO` = emp.`DEPTNO`;

    //18.列出所有带"克"的姓名以及部门名称，部门人数  【重点关注，出题人有毛病】
    //SELECT * FROM lgp_emp LEFT JOIN lgp_dept ON lgp_emp.DEPTNO=lgp_dept.DEPTNO LEFT JOIN (SELECT dep.DNAME,dep.DEPTNO,count(emp.EMPNO) 部门人数 FROM lgp_emp emp LEFT JOIN (SELECT lgp_dept.DEPTNO,lgp_dept.DNAME FROM lgp_dept LEFT JOIN lgp_emp ON lgp_emp.DEPTNO = lgp_dept.DEPTNO WHERE lgp_emp.ENAME LIKE "%克%") dep ON emp.DEPTNO=dep.DEPTNO WHERE emp.DEPTNO=dep.DEPTNO GROUP BY dep.DEPTNO) des ON des.DEPTNO = lgp_emp.DEPTNO WHERE lgp_emp.ENAME LIKE "%克%"

    //19.列出最低薪金大于1500的各种工作以及从事此工作的全部雇员人数
    //SELECT lgp_emp.JOB,COUNT(lgp_emp.EMPNO) FROM lgp_emp WHERE lgp_emp.JOB IN(SELECT DISTINCT JOB FROM lgp_emp WHERE SAL>1500)  GROUP BY lgp_emp.JOB

    //20.列出在部门"销售部"工作的员工的姓名，假定不知道销售部的部门编号
    //SELECT * FROM lgp_emp LEFT JOIN (SELECT DEPTNO FROM lgp_dept WHERE DNAME IN ("销售部"))dep ON lgp_emp.DEPTNO=dep.DEPTNO WHERE lgp_emp.DEPTNO=dep.DEPTNO

    //21.列出薪金高于公司平均薪金的所有员工，所在部门，上级领导，公司的工资等级
    //SELECT * FROM (SELECT lgp_emp.EMPNO,lgp_emp.ENAME,lgp_emp.JOB,lgp_emp.MGR,lgp_emp.HIREDATE,lgp_emp.SAL,leader.`领导名`,lgp_emp.DEPTNO,lgp_dept.DNAME FROM lgp_emp INNER JOIN (SELECT lgp_emp.ENAME 领导名,lgp_emp.EMPNO ldNo FROM (SELECT DISTINCT MGR FROM lgp_emp WHERE MGR IS NOT NULL)mgId LEFT JOIN  lgp_emp ON lgp_emp.EMPNO=mgId.MGR) leader ON lgp_emp.MGR = leader.ldNo LEFT JOIN lgp_dept ON lgp_emp.DEPTNO = lgp_dept.DEPTNO
    //INNER JOIN (SELECT EMPNO xzNo FROM lgp_emp INNER JOIN (SELECT DISTINCT MGR FROM lgp_emp)ma ON lgp_emp.EMPNO=ma.MGR WHERE SAL>(SELECT AVG(lgp_emp.SAL) FROM lgp_emp)) xinzi ON lgp_emp.EMPNO = xinzi.xzNo WHERE (xinzi.xzNo = lgp_emp.EMPNO)) super_emp,lgp_salgrade WHERE super_emp.SAL>lgp_salgrade.losal AND super_emp.SAL<lgp_salgrade.hisal

    //22.列出至少有一个员工的所有部门编号、名称，并统计出这些部门的平均工资、最低工资、最高工资。
    //SELECT deptI.DEPTNO,deptI.DNAME,AVG(lgp_emp.SAL) 平均薪资,MIN(lgp_emp.SAL) 最小薪资,MAX(lgp_emp.SAL) 最高薪资 FROM lgp_emp LEFT JOIN(SELECT lgp_dept.DEPTNO,lgp_dept.DNAME,COUNT(lgp_emp.EMPNO) myNum FROM lgp_dept LEFT JOIN lgp_emp ON lgp_emp.DEPTNO = lgp_dept.DEPTNO GROUP BY lgp_dept.DEPTNO HAVING myNum>0) deptI ON deptI.DEPTNO = lgp_emp.DEPTNO GROUP BY deptI.DEPTNO
    //答案：SELECT e.`deptno`,d.`dname`,AVG(sal),MAX(e.`sal`),MIN(sal),COUNT(*) FROM lgp_dept d JOIN lgp_emp e ON e.`deptno`=d.`deptno` GROUP BY e.`deptno`;
    //23.列出薪金比“史密斯”或“艾伦”多的所有员工的编号、姓名、部门名称、其领导姓名。
    /*SELECT * FROM lgp_emp
    LEFT JOIN lgp_dept ON lgp_emp.DEPTNO = lgp_dept.DEPTNO
    LEFT JOIN (SELECT lgp_emp.ENAME 领导名,lgp_emp.EMPNO leaNo FROM (SELECT DISTINCT MGR FROM lgp_emp WHERE MGR IS NOT NULL)mgId LEFT JOIN  lgp_emp ON lgp_emp.EMPNO=mgId.MGR) leads ON lgp_emp.MGR = leads.leaNo
    WHERE lgp_emp.SAL> (SELECT SAL FROM lgp_emp WHERE lgp_emp.ENAME="史密斯") || lgp_emp.SAL> (SELECT SAL FROM lgp_emp WHERE lgp_emp.ENAME="艾伦")*/

    //24.列出所有员工的编号、姓名及其直接上级的编号、姓名，显示的结果按领导年工资的降序排列
    //SELECT * FROM lgp_emp emp LEFT JOIN lgp_emp emp2 ON emp.MGR = emp2.EMPNO WHERE emp.MGR = emp2.EMPNO ORDER BY (emp2.SAL)*12 DESC

    //25.列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数 【多了部门人数】
    //人员：SELECT emp.EMPNO,emp.ENAME,dept.DNAME,dept.DEPTNO,dept.LOC FROM lgp_emp emp LEFT JOIN lgp_emp emp2 ON emp.MGR = emp2.EMPNO LEFT JOIN lgp_dept dept ON emp.DEPTNO = dept.DEPTNO WHERE emp.MGR = emp2.EMPNO AND DATEDIFF(emp.HIREDATE,emp2.HIREDATE)<0
    //涉及的部门下属人数：SELECT ss.DNAME,COUNT(lgp_emp.EMPNO) FROM lgp_emp,(SELECT DISTINCT superEmp.DNAME,superEmp.DEPTNO FROM (SELECT emp.EMPNO,emp.ENAME,dept.DNAME,dept.DEPTNO,dept.LOC FROM lgp_emp emp LEFT JOIN lgp_emp emp2 ON emp.MGR = emp2.EMPNO LEFT JOIN lgp_dept dept ON emp.DEPTNO = dept.DEPTNO WHERE emp.MGR = emp2.EMPNO AND DATEDIFF(emp.HIREDATE,emp2.HIREDATE)<0) superEmp) ss WHERE lgp_emp.DEPTNO = ss.DEPTNO GROUP BY lgp_emp.DEPTNO

    //26.列出部门名称和这些部门的员工信息（数量、平均工资），同时列出那些没有员工的部门【重复】
    //27.列出所有带"克"的姓名及其部门名称，部门的人数，工资等级 【真实带部门人数】
    //SELECT suEmp.EMPNO,suEmp.ENAME,suEmp.JOB,suEmp.MGR,suEmp.HIREDATE,suEmp.SAL,suEmp.DEPTNO,suEmp.DNAME,suEmp.部门人数,lgp_salgrade.grade FROM (SELECT lgp_emp.EMPNO,lgp_emp.ENAME,lgp_emp.JOB,lgp_emp.MGR,lgp_emp.HIREDATE,lgp_emp.SAL,lgp_emp.DEPTNO,des.DNAME,des.部门人数 FROM lgp_emp LEFT JOIN (SELECT dep.DNAME,dep.DEPTNO,count(emp.EMPNO) 部门人数 FROM lgp_emp emp LEFT JOIN (SELECT lgp_dept.DEPTNO,lgp_dept.DNAME FROM lgp_dept LEFT JOIN lgp_emp ON lgp_emp.DEPTNO = lgp_dept.DEPTNO WHERE lgp_emp.ENAME LIKE "%克%") dep ON emp.DEPTNO=dep.DEPTNO WHERE emp.DEPTNO=dep.DEPTNO GROUP BY dep.DEPTNO) des ON des.DEPTNO = lgp_emp.DEPTNO WHERE (lgp_emp.ENAME LIKE "%克%")) suEmp,lgp_salgrade WHERE (suEmp.SAL<lgp_salgrade.hisal AND suEmp.SAL>lgp_salgrade.losal)

    //28.列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数及所在部门名称、位置、平均工资
    //SELECT JOB,COUNT(lgp_emp.EMPNO),AVG(lgp_emp.SAL) FROM lgp_emp GROUP BY JOB HAVING lgp_emp.JOB IN (SELECT JOB FROM lgp_emp GROUP BY job HAVING MIN(sal) > 1500)

    //29.列出在部门“SALES”（销售部）工作的员工的姓名、基本工资、雇佣日期、部门名称，假定不知道销售部的部门编号 【重复】
    //30.列出薪金高于公司平均薪金的所有员工，所在部门，上级领导，公司的工资等级【重复】
    //31.列出与“斯科特”从事相同工作的所有员工及部门名称，部门人数 【重复】
    //32.查询dept表的结构
    //SHOW COLUMNS FROM lgp_dept
    //33.检索emp表，用is a 这个字符串来连接员工姓名和工种两个字段
    //SELECT CONCAT(ENAME," is a ",JOB) FROM lgp_emp
    //34.检索emp表中有提成的员工姓名、月收入及提成
    //SELECT ENAME,SAL,COMM FROM lgp_emp WHERE COMM IS NOT NULL


    /***************LGP自我出题*******************/
    //找出不收取佣金或收取的佣金低于100的员工

    //显示员工的姓名和受雇日期,新的员工排在最前面.

    //按部门的降序排序显示职工,若工作相同则按薪金排序

    //查出不姓金的员工的信息

    //要求查询出每一位雇员的姓名、职位、领导的姓名，部门名字

    //查询入职日期早于其直接上级领导的所有员工信息。

    //查询平均工资低于2000的部门及其员工信息。

    //根据传入人id查出与其同部门且入职时间晚于它的所有人

    //查询从事同一种工作但不属于同一部门的员工信息。

    //查询各种工作的最低工资

    //查询各个部门的人数及平均工资、工资总和。

    //统计各个部门的员工工资总和，工资层级达到的个数

    //统计各个工作的员工人数与最高工资、最低工资、平均工资及其所属grade。

    //查询所有员工中最大工资的员工信息及其部门信息。

    //查询有工资在900～3000之间的员工所在部门的员工信息

    //查询人数最多的部门信息

    //查询所有员工中工资排序在5到10名之间的员工信息。

    //查询指定年份之间入职的员工信息。(1980-1985)

    //选择公司中没有管理者的员工姓名及job

    //选择公司中有奖金(COMM 不为空,且不为0)的员工姓名，工资和奖金比例,按工资逆排序,奖金比例逆排序.

    //找出佣金高于薪金 60%的雇员

    //找出部门 10 中所有经理、部门 20 中所有办事员，既不是经理又不是办事员但其薪金>=2000 的所有雇员的详细资料

    //统计各职工至今入职念书及统计达到10年的员工

}
